// File: jmcomic-core/src/main/java/dev/jukomu/jmcomic/client/JmSearchAlbumClient.java
package dev.jukomu.jmcomic.client;

import dev.jukomu.jmcomic.config.JmMagicConstants;
import dev.jukomu.jmcomic.entity.JmSearchPage;

/**
 * 对应Python的JmSearchAlbumClient，定义搜索禁漫本子的接口。
 */
public interface JmSearchAlbumClient {

    /**
     * 搜索成人A漫。
     *
     * @param searchQuery 搜索查询词。
     * @param page        页码。
     * @param mainTag     主标签（0:站内搜索, 1:作品, 2:作者, 3:标签, 4:角色）。
     * @param orderBy     排序方式。
     * @param time        时间范围。
     * @param category    类别。
     * @param subCategory 副类别。
     * @return JmSearchPage实例。
     */
    JmSearchPage search(String searchQuery, int page, int mainTag, String orderBy, String time, String category, String subCategory);

    default JmSearchPage searchSite(String searchQuery, int page) {
        return search(searchQuery, page, 0, JmMagicConstants.ORDER_BY_LATEST, JmMagicConstants.TIME_ALL, JmMagicConstants.CATEGORY_ALL, null);
    }

    default JmSearchPage searchWork(String searchQuery, int page) {
        return search(searchQuery, page, 1, JmMagicConstants.ORDER_BY_LATEST, JmMagicConstants.TIME_ALL, JmMagicConstants.CATEGORY_ALL, null);
    }

    default JmSearchPage searchAuthor(String searchQuery, int page) {
        return search(searchQuery, page, 2, JmMagicConstants.ORDER_BY_LATEST, JmMagicConstants.TIME_ALL, JmMagicConstants.CATEGORY_ALL, null);
    }

    default JmSearchPage searchTag(String searchQuery, int page) {
        return search(searchQuery, page, 3, JmMagicConstants.ORDER_BY_LATEST, JmMagicConstants.TIME_ALL, JmMagicConstants.CATEGORY_ALL, null);
    }

    default JmSearchPage searchActor(String searchQuery, int page) {
        return search(searchQuery, page, 4, JmMagicConstants.ORDER_BY_LATEST, JmMagicConstants.TIME_ALL, JmMagicConstants.CATEGORY_ALL, null);
    }
}